package com.enzoism.springboot.dive.filter;

import javax.servlet.*;
import java.io.IOException;

/**
 * 说明：这个类必须继承Filter类，这个是Servlet的规范，这个跟以前的Web项目没区别。
 * 但是，有了过滤器类以后，以前的web项目可以在web.xml中进行配置，但是spring boot项目并没有web.xml这个文件，那怎么配置？
 * 在Spring boot中，我们需要FilterRegistrationBean来完成配置。
 *
 * 1）Filter所谓初始化一次，只是在init()方法执行一次
 * 2）每次的请求都会都会进入到doFilter()中
 */
public class LogCostFilter implements Filter {
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
        System.out.println("------>LogCostFilter1-进行Filter初始化");
    }
 
    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        long start = System.currentTimeMillis();
        filterChain.doFilter(servletRequest,servletResponse);
        System.out.println("---->LogCostFilter1请求进入到过滤器，耗时(ms)："+(System.currentTimeMillis()-start));
    }
 
    @Override
    public void destroy() {
        System.out.println("------>LogCostFilter1-进行Filter销毁");
    }
}